perm filename NTBOX.FAI[CMS,LCS] blob sn#404769 filedate 1978-12-15 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00013 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002		TITLE TBOX
C00004 00003	   Reset and interrupt vectors.
C00006 00004	INPUT WAIT.	Check upflg time?
C00008 00005		CALL	CLED	Clear cal. and mode leds.
C00010 00006	CKJSC:	MOVRI	K,JSC
C00012 00007		NOP ↔ NOP ↔ NOP	For page boundry.
C00014 00008	WLED:	OUTB	Latch A on bus.
C00016 00009	WJLED:	MOVAR	N	Save JS led bits.
C00017 00010	 Bit spreading table
C00019 00011	GETJSW:	MOVRI	K,JW1
C00021 00012	Alfa led message table.
C00024 00013	("T"∧77)∨300 ↔ ("O"∧77)∨200 ↔ ("O"∧77)∨100
C00027 ENDMK
C⊗;
	TITLE TBOX
	.INSERT MAC748.FAI[CMS,LCS]

   ;Ram bank 0 registers.
	K ← 0
	I ← 1
	N ← 2
	T ← 3	;Timer overflow count.
	CMD ← 4	;TBOX and JS led bits.
	CMD1 ← 5	;Alfa led message index.
	OFFL ← 6	;Alfa off timer low.
	OFFH ← 7	;High.

   ;Ram10-27 = Stack.
   ;Ram bank 1 registers.
	P ← 30	;Pots pointer.
	O ← 31	;Offset pointer.
	X ← 32
	Y ← 33
	Z ← 34
	SW0 ← 35	;TBOX switch bits.
	SW1 ← 36
	SW2 ← 37

   ;Standard ram.
	SPD ← 40	;Speed pot.
	P0 ← 41	;Joy stick pots.
	P1 ← 42
	P2 ← 43
	P3 ← 44
	JW0 ← 45	;T.	Joy stick switch channels.
	JW1 ← 46	;P/O.
	JW2 ← 47	;TOOL.
	JW3 ← 50	;T/JS/C.

	OSPD ← 51	;Old speed pot.
	OP0 ← 52	;Joy stick offsets.
	OP1 ← 53
	OP2 ← 54
	OP3 ← 55
	OJSW ← 56	;Old joy stick switch bits.
	OCMD ← 57	;Old led bits.
	OCMD1 ← 60	;Old alfa led index.

	JSC ← 61	;Joy stick not calib. flag.

	XTAL ← =6000000	;In hertz.
	BRATE ← =9600	;Baud rate

;TBIT ← ((=10000000/BRATE)/((=10000000/XTAL)*=15))/2
	TBIT ← =21

	TT ← 1	;Triple throw switch port.
	S ← 2	;Scan and A/D port.
	PBL ← 4	;Push button port low.
	PBH ← 5	;Push button port high.
	CEW ← 6	;Alfa led chip enables and write port.
	JS ← 7	;Joy stick, CU, and led latch port.
   ;Reset and interrupt vectors.
	JMP	RST	;RESET VECTOR
	0
	DISXI		;EXTERNAL INTERRUPT VECTOR
	NOP
	NOP
	NOP
	DISTI		;TIMER INT VECTOR
	RETR

   ;Power on reset.
RST:	CLRA	;0 For clear cursor memory.
	OUTB	;Latch bus output.
	MOVI	377	;SETUP INPUT PORTS
	OUTP	TT	;SPTT switches.
	MOVI	77	;P4-7, SCAN, STRT, ALE.
	OUTP	S
   ;Setup PBSW ports for input.
	MOVAX	PBL	;PBSW low.
	MOVAX	PBH	;PBSW high.

   ;Clear cursor memory.
	MOVI	170	;7,,10.
	MOVAX	CEW	;Enable all alfa leds.
	SWAP	;A ← 207.
	MOVAX	JS	;Clear JS and CU.
   ;Write all alfa leds.
	ANPA	CEW	;NOT W
	CPLA
	ORPA	CEW	;W

	SWAP	;A ← 10,,7.
	ORPA	CEW	;Disable all alfa leds.
	SWAP	;A0-3 ← 10.
	ORPA	JS	;NOT CU.

	CALL	CLED	;Clear leds.
	CALL	CALED	;Clear alfa leds.
	JINT	CLRJSL	;Check if joy stick.
	JMP	STIMER
CLRJSL:	MOVRI	N,4	;Joy stick not cal. bit.
	CALL	CJLED	;Init joy stick leds.
STIMER:	MOVAT		;Setup timer.
	STRTT

	CPLF1	;Set alfa leds off.
	MOVRI	K,JSC
	MOVMI	K,4	;Set joy stick not calib.
	
	JMP	SETFLG

; Set scan flag and timer
UPFLG:	DJNZ	T,CKIN
SETFLG:	MOVRI	T,4	;4 = 82 ms.
	CLRF0		;Set scan flag

	JF1S	CKIN	;Check if alfa off.
	DJNZ	OFFL,CKIN	;OFFW ← OFFW - 1.
	DJNZ	OFFH,CKIN
	CPLF1	;Set alfa led off flag.
;INPUT WAIT.	Check upflg time?
   OFFSET ← TBIT/3	;Center delay?
INWAI:	JTF	UPFLG	;Check if timer time out.

CKIN:	JT0H	INWAI	;Check for start bit.

	MOVRI	K,OFFSET-4	;Center - Itime.
CENTER:	DJNZ	K,CENTER	;Wait for center of bit
	JT0H	INWAI	;Check if valid start bit

; Byte input routine
	MOVRI	N,11	;# of bits -1

ILOOP:	MOVRI	K,TBIT-5;tBIT - tI
WAI:	DJNZ	K,WAI
	CLRC
	JT0H	BITON
	RORC
	JMP	BITOFF
BITON:	CPLC
	RORC
	NOP

BITOFF:	DJNZ	N,ILOOP

	ROLC		;Shift out stop bit
	JCC	INWAI	;Check for good stop bit.

	JBS	7,BYTE1	;Check if first or second byte.

	MOVAR	CMD	;Save first input byte.
	JMP	INWAI	;Get next byte.

BYTE1:	MOVAR	CMD1	;Save second byte.

	CLRA	;SPD default.
	JT1H	ADZRO	;Speed off.

   ;A/DCHAN ← SPEED.
	OUTB	;Latch zero on bus.
	ORPI	S,200	;ALE.
	ANPI	S,177	;NOT ALE.

	CALL	CONVRT	;Wait for speed.

	JNZ	ADZRO	;Check if on and zero.
	INCA	;A ← 1.

ADZRO:	MOVRI	K,SPD	;Save speed pot value.
	MOVAM	K
	CALL	CLED	;Clear cal. and mode leds.
	MOVRA	CMD	;Get mode code.
	RORC	;Get cal. bit.
	ANI	7	;Zero data input to LS259.
	CALL	WLED	;Write mode led.

	JCC	CKJOY	;No calib. bit.
	CLRA	;Led 0.
	CALL	WLED	;Write cal. led.

CKJOY:	JINT	GPOTS	;Check for joy stick.
	MOVRI	K,JSC
	MOVMI	K,4	;JSC ← 1.
	JMP	CKSCAN

GPOTS:	MOVRA	CMD	;Setup JS led bits.
	SWAP	;Get JS led bits.
	ANI	3	;2 JS led bits.
	MOVRI	K,JSC
	ORM	K	;A ← A .OR. JSC.
	CALL	WJLED	;Write JS led bits.

;A/D convert routines.
	MOVI	1	;Chanel 1.
	OUTB	;Latch bus output.
	ORPI	S,200	;ALE
	ANPI	S,177	;NOT ALE.

	MOVI	375	;NOT CLR bit.
	ANPA	JS	;NOT CLR.
	CPLA
	ORPA	JS	;CLR.
	MOVRI	P,P0	;JS pot index.
	MOVRI	N,10	;# of pots + switch channels.

ADLOOP:	CALL	CONVRT	;Wait for A/D.
	MOVAM	P	;Ram(p) ← Pots&sws(p).

	MOVI	376
	ANPA	JS	;NOT CNT.
	CPLA
	ORPA	JS	;CNT

	INCR	P	;Next pot.
	DJNZ	N,ADLOOP	;Next channel.

;Check for scan flag.
CKSCAN:	JF0S	CKJSC	;Scan flag.

	JMP	SCAN	;Scan switches.
CKJSC:	MOVRI	K,JSC
	MOVMA	K	;A ← JSC.
	JBS	2,ZPOTS	;Check if JS not calib.

	MOVRI	P,P0	;Pots pointer.
	MOVRI	O,OP0	;Offset pointer.
	MOVRI	N,4	;# of pots.

OFFSL:	MOVMA	P	;Get pot.
	CPLA
	ADDM	O	;Subtract offset.
	CPLA
	MOVAM	P	;Save pot.

	INCR	P
	INCR	O
	DJNZ	N,OFFSL
	JMP	CKACT

ZPOTS:	CLRA
	MOVRI	P,P0
	MOVRI	N,4	;# of pots.
ZPL:	MOVAM	P	;Ram(Pots) ← 0.
	INCR	P
	DJNZ	N,ZPL

;Activity check.
CKACT:	MOVRI	K,OCMD
	MOVMA	K
	XORR	CMD	;A ← CMD .XOR. OCMD.
	JNZ	ACT
	MOVRI	K,OCMD1	;Old alfa index.
	MOVMA	K
	XORR	CMD1
	JNZ	ACT

	SRB1	;Select ram bank 1.
	MOVRA	SW0
	JNZ	RACT
	MOVRA	SW1
	JNZ	RACT
	MOVRA	SW2
	ANI	77	;Mask out JS and P/O bits.
	JNZ	RACT

	MOVRI	P,SPD	;Now pot index.
	MOVRI	O,OSPD	;Old pot index.
	MOVMA	P	;Check speed.
	XORM	O
	JZ	CKJP

RACT:	SRB0	;Select ram bank 0.
ACT:	JMP	ACTIVE
	NOP ↔ NOP ↔ NOP	;For page boundry.
CKJP:	MOVRI	N,4
JSZCK:	INCR	P
	MOVMA	P
	JNZ	RACT	;Check if JS pots are zero.
	DJNZ	N,JSZCK

	SRB0	;Select ram bank 0.
	CLRA	;Blank message index.
	JF1S	ADPY	;Check if alfa off.
	JMP	OBITS	;Not active.

RSTRAM:	SRB0	;Select ram bank 0.
ACTIVE:	MOVRA	CMD	;OLD ← NEW.
	MOVRI	K,OCMD
	MOVAM	K	;OCMD.
	MOVRA	CMD1
	INCR	K
	MOVAM	K	;OCMD1.

	MOVRI	P,SPD
	MOVRI	O,OSPD
	MOVMA	P	;A ← SPD.
	MOVAM	O	;OSPD ← A.

	CLRF1	;Alfa led off flag ← 0.
	MOVRI	OFFH,10	;OFFW ← tOWAIT.

	MOVRA	CMD1	;Update alfa leds.
	SWAP	;Shift etc.
	ANI	360	;For 16 messages.
ADPY:	CALL	OALFA	;Output message.

OBITS:	MOVRI	CMD1,0	;Init check sum.
	MOVRI	I,SW0	;Point to out bytes.
	MOVRI	CMD,10	;# of output bytes.

OUTL:	MOVMA	I	;Get output byte.
	CALL	OBYTE
	ADR	CMD1	;Add it to cksum.
	MOVAR	CMD1

	INCR	I
	DJNZ	CMD,OUTL

	MOVRA	CMD1
	CPLA
	INCA
	CALL	OBYTE	;Output check sum.

	JMP	INWAI	;Loop back to input wait.

; Output Acc. to SI/O line
OBYTE:	MOVRI	K,11	;# of bits -1
	CLRC
	ROLC		;Start bit
OLOOP:	OUTP	TT	;Output bit
	RORC
	MOVRI	N,TBIT-3	;TBIT - Itime.

OWAIT:	DJNZ	N,OWAIT
	DJNZ	K,OLOOP

	ORPI	TT,377	;Stop bit.
	MOVRI	N,TBIT-10	;TBIT - Itime.
SWAIT:	DJNZ	N,SWAIT
	RORC
	RET
WLED:	OUTB	;Latch A on bus.
	MOVI	7	;NOT led E bit.
	ANPA	JS	;NOT E.
	CPLA
	ORPA	JS	;E.

	RET

;Clear leds
CLED:	MOVRI	N,370
	MOVRA	N	;Setup regs.
CLRL:	CALL	WLED	;Clear led loop.
	INCR	N	;Next led.
	MOVRA	N
	JNZ	CLRL

	RET

;Convert channel and wait.
CONVRT:	ORPI	S,100	;STRT.
	ANPI	S,277	;NOT STRT.

	MOVI	=22	;=172 micro seconds?
CONL:	DECA	;Convert wait.
	JNZ	CONL
	MOVXMA	K	;Get A/D output.
	MOVXMA	K	;Twice for bus unlatch.
	OUTB	;Latch bus for output.
	RET

;Alfa led output routines.
CALED:	CLRA	;Blank string index.

OALFA:	MOVAR	I	;Save string index.
	MOVI	376	;NOT CE0.

CENBL:	MOVRI	N,4	;# of chrs in I.C.
	MOVAR	K	;Save CE.
	MOVAX	CEW	;NOT CE.

CHRL:	MOVRA	I
	MOVP3	;A ← String(chr).
	OUTB	;Latch bus output.

	MOVI	367
	ANPA	CEW	;NOT W.
	CPLA
	ORPA	CEW	;W

	INCR	I	;CHR ← CHR+1.
	DJNZ	N,CHRL

	MOVRA	K
	ROL	;Next CE.
	JBS	3,CENBL

	ORPA	CEW	;CE.

	RET

WJLED:	MOVAR	N	;Save JS led bits.
CJLED:	MOVI	355	;NOT CNT,,CLR.
	ANPA	JS	;NOT CLR.
	CPLA
	ORPA	JS	;CLR.
	SWAP	;A ← 2,,1.

	INCR	N	;Fix for latch.
	JMP	CKZRO

CJL:	CPLA	;A ← 15,,16.
	ANPA	JS	;NOT CNT.
	CPLA
	ORPA	JS	;CNT
CKZRO:	DJNZ	N,CJL

	MOVI	373
	ANPA	JS	;NOT LAT.
	CPLA
	ORPA	JS	;LAT.

	RET
; Bit spreading table
   LOC 1000	;1000 = Start of page two.
	125 ↔ 124 ↔ 121 ↔ 120 ↔ 105 ↔ 104 ↔ 101 ↔ 100
	 25 ↔  24 ↔  21 ↔  20 ↔   5 ↔   4 ↔   1 ↔   0
   SBITS ← 60	;Scan bits.
   ROW0 ← 357	;Scan row 0.
   ROW1 ← 337	;Scan row 1.

SCAN:	SRB1	;Select ram bank 1.
	CPLF0		;Reset scan flag.
	ORPI	S,SBITS	;Turn off rows
	ANPI	S,ROW0	;Enable row 0.
	INP	TT	;Scan row 0
	MOVAR	SW0	;Save it
	ANI	17	;Get low nibble
	MOVPD		;Get bits from spread table
	XCHR	SW0
	SWAP		;Swap high low nibbles
	ANI	17	;Get high nibble 
	MOVPD
	MOVAR	SW1

	ORPI	S,SBITS	;Turn off row 0.
	ANPI	S,ROW1	;Enable row 1.
	INP	TT	;Scan row 1
	ORPI	S,SBITS	;Disable scan.
	MOVAR	SW2	;Save row 1
	ANI	17	;Low nibble
	MOVPD
	ROL		;Shift + bits
	ORR	SW0	;Or into - bits
	ANI	374	;Clear teach and off bits.
	MOVAR	SW0
	MOVRA	SW2	;Get row 1 again
	SWAP
	ANI	17
	MOVPD
	ROL
	ORR	SW1
	MOVAR	SW1

	MOVXA	PBL	;Get push buttons.
	MOVAR	SW2	;Save low nibble.
	MOVXA	PBH
	SWAP	;High nibble.
	ORR	SW2

	CPLA
	MOVAR	SW2
	ANI	77	;Zero JS and P/O bits.
	XCHR	SW2
	ROLC		;Shift & swap teach & off bits
	ROL
	ROLC
	ANI	3
	ORR	SW0
	MOVAR	SW0

	JINT	GETJSW	;Check if joy stick.
	SRB0	;Select ram bank 0.
	JMP	ZPOTS	;No joy stick.
GETJSW:	MOVRI	K,JW1
	MOVMA	K	;A ← P/O.
	ANI	100	;Get P/O bit.
	ORR	SW2
	MOVAR	SW2	;SW2 ← P/O .OR. PBSWs.
	MOVRI	K,JW3
	MOVMA	K	;Joy stick T/JS/C bits.
	ANI	300
	JZ	SETOFF	;Calib. joy stick.

	JBS	6,SETJT
	MOVI	100
SETJT:	XORI	300	;Complement J/T bit.
	ORR	SW2	;OR into SW2.
	MOVAR	SW2

	JBS	7,GTOOL	;Check for JS mode.
	SRB0	;Select ram bank 0.
	JMP	CKJSC

GTOOL:	MOVRI	K,JW0	;Check JS switch bits.
	MOVMA	K	;Get JS teach switch.
	ROLC
	MOVRA	SW0
	ROR
	ROLC	;Shift teach bit into SW0.
	MOVAR	SW0

	MOVRI	K,JW2
	MOVMA	K	;Get JS tool bits.
	ANI	300
	JNZ	TPLUS	;Check for T-.

	MOVI	100	;T- bit.
STOOL:	XCHR	SW1
	ANI	77	;Zero TBOX tool bits.
	ORR	SW1	;SW1 ← SW1 .OR. JSTOOLBITS.
	MOVAR	SW1
	SRB0	;Select ram bank 0.
	JMP	CKJSC

TPLUS:	JBS	6,SETTP	;Check for no tool bits.
	CLRA
SETTP:	ANI	200
	JMP	STOOL	;OR Tbits into SW1.

SETOFF:	MOVRI	P,P0	;Pots pointer.
	MOVRI	O,OP0	;Offset pointer.
	MOVRI	N,4	;# of pots.
SETL:	MOVMA	P	;A ← POT(P).
	MOVAM	O	;OFFSET(O) ← A.
	INCR	P
	INCR	O
	DJNZ	N,SETL

	MOVRI	K,JSC
	MOVMI	K,0	;JSC ← 0.
	MOVI	200
	ORR	SW2	;Set JS/T bit.
	MOVAR	SW2
	JMP	GTOOL
;Alfa led message table.
   LOC 1400	;Start of page three.

(" "∧77)∨300 ↔ (" "∧77)∨200 ↔ (" "∧77)∨100
" "∧77 ↔ (" "∧77)∨300 ↔ (" "∧77)∨200
(" "∧77)∨100 ↔ " "∧77 ↔ (" "∧77)∨300
(" "∧77)∨200 ↔ (" "∧77)∨100 ↔ " "∧77
0 ↔ 0 ↔ 0 ↔ 0

("L"∧77)∨300 ↔ ("I"∧77)∨200 ↔ ("M"∧77)∨100
"I"∧77 ↔ ("T"∧77)∨300 ↔ (" "∧77)∨200
("S"∧77)∨100 ↔ "T"∧77 ↔ ("O"∧77)∨300
("P"∧77)∨200 ↔ (" "∧77)∨100 ↔ "1"∧77
0 ↔ 0 ↔ 0 ↔ 0

("L"∧77)∨300 ↔ ("I"∧77)∨200 ↔ ("M"∧77)∨100
"I"∧77 ↔ ("T"∧77)∨300 ↔ (" "∧77)∨200
("S"∧77)∨100 ↔ "T"∧77 ↔ ("O"∧77)∨300
("P"∧77)∨200 ↔ (" "∧77)∨100 ↔ "2"∧77
0 ↔ 0 ↔ 0 ↔ 0

("L"∧77)∨300 ↔ ("I"∧77)∨200 ↔ ("M"∧77)∨100
"I"∧77 ↔ ("T"∧77)∨300 ↔ (" "∧77)∨200
("S"∧77)∨100 ↔ "T"∧77 ↔ ("O"∧77)∨300
("P"∧77)∨200 ↔ (" "∧77)∨100 ↔ "3"∧77
0 ↔ 0 ↔ 0 ↔ 0

("L"∧77)∨300 ↔ ("I"∧77)∨200 ↔ ("M"∧77)∨100
"I"∧77 ↔ ("T"∧77)∨300 ↔ (" "∧77)∨200
("S"∧77)∨100 ↔ "T"∧77 ↔ ("O"∧77)∨300
("P"∧77)∨200 ↔ (" "∧77)∨100 ↔ "4"∧77
0 ↔ 0 ↔ 0 ↔ 0

("L"∧77)∨300 ↔ ("I"∧77)∨200 ↔ ("M"∧77)∨100
"I"∧77 ↔ ("T"∧77)∨300 ↔ (" "∧77)∨200
("S"∧77)∨100 ↔ "T"∧77 ↔ ("O"∧77)∨300
("P"∧77)∨200 ↔ (" "∧77)∨100 ↔ "5"∧77
0 ↔ 0 ↔ 0 ↔ 0

("L"∧77)∨300 ↔ ("I"∧77)∨200 ↔ ("M"∧77)∨100
"I"∧77 ↔ ("T"∧77)∨300 ↔ (" "∧77)∨200
("S"∧77)∨100 ↔ "T"∧77 ↔ ("O"∧77)∨300
("P"∧77)∨200 ↔ (" "∧77)∨100 ↔ "6"∧77
0 ↔ 0 ↔ 0 ↔ 0

("L"∧77)∨300 ↔ ("I"∧77)∨200 ↔ ("M"∧77)∨100
"I"∧77 ↔ ("T"∧77)∨300 ↔ (" "∧77)∨200
("S"∧77)∨100 ↔ "T"∧77 ↔ ("O"∧77)∨300
("P"∧77)∨200 ↔ (" "∧77)∨100 ↔ "7"∧77
0 ↔ 0 ↔ 0 ↔ 0
("T"∧77)∨300 ↔ ("O"∧77)∨200 ↔ ("O"∧77)∨100
" "∧77 ↔ ("C"∧77)∨300 ↔ ("L"∧77)∨200
("O"∧77)∨100 ↔ "S"∧77 ↔ ("E"∧77)∨300
(" "∧77)∨200 ↔ (" "∧77)∨100 ↔ " "∧77
0 ↔ 0 ↔ 0 ↔ 0

("T"∧77)∨300 ↔ ("O"∧77)∨200 ↔ ("O"∧77)∨100
" "∧77 ↔ ("F"∧77)∨300 ↔ ("A"∧77)∨200
("R"∧77)∨100 ↔ " "∧77 ↔ (" "∧77)∨300
(" "∧77)∨200 ↔ (" "∧77)∨100 ↔ " "∧77
0 ↔ 0 ↔ 0 ↔ 0

("T"∧77)∨300 ↔ ("E"∧77)∨200 ↔ ("A"∧77)∨100
"C"∧77 ↔ ("H"∧77)∨300 ↔ (" "∧77)∨200
("M"∧77)∨100 ↔ "O"∧77 ↔ ("D"∧77)∨300
("E"∧77)∨200 ↔ (" "∧77)∨100 ↔ " "∧77
0 ↔ 0 ↔ 0 ↔ 0

("M"∧77)∨300 ↔ ("A"∧77)∨200 ↔ ("N"∧77)∨100
"U"∧77 ↔ ("A"∧77)∨300 ↔ ("L"∧77)∨200
(" "∧77)∨100 ↔ "M"∧77 ↔ ("O"∧77)∨300
("D"∧77)∨200 ↔ ("E"∧77)∨100 ↔ " "∧77
0 ↔ 0 ↔ 0 ↔ 0

("N"∧77)∨300 ↔ ("O"∧77)∨200 ↔ (" "∧77)∨100
"H"∧77 ↔ ("I"∧77)∨300 ↔ ("G"∧77)∨200
("H"∧77)∨100 ↔ " "∧77 ↔ ("P"∧77)∨300
("W"∧77)∨200 ↔ ("R"∧77)∨100 ↔ " "∧77
0 ↔ 0 ↔ 0 ↔ 0

("P"∧77)∨300 ↔ ("R"∧77)∨200 ↔ ("O"∧77)∨100
"G"∧77 ↔ (" "∧77)∨300 ↔ ("R"∧77)∨200
("U"∧77)∨100 ↔ "N"∧77 ↔ ("N"∧77)∨300
("I"∧77)∨200 ↔ ("N"∧77)∨100 ↔ "G"∧77
0 ↔ 0 ↔ 0 ↔ 0

("R"∧77)∨300 ↔ ("U"∧77)∨200 ↔ ("N"∧77)∨100
" "∧77 ↔ ("H"∧77)∨300 ↔ ("O"∧77)∨200
("L"∧77)∨100 ↔ "D"∧77 ↔ (" "∧77)∨300
(" "∧77)∨200 ↔ (" "∧77)∨100 ↔ " "∧77
0 ↔ 0 ↔ 0 ↔ 0

("F"∧77)∨300 ↔ ("A"∧77)∨200 ↔ ("T"∧77)∨100
"A"∧77 ↔ ("L"∧77)∨300 ↔ (" "∧77)∨200
("E"∧77)∨100 ↔ "R"∧77 ↔ ("R"∧77)∨300
("O"∧77)∨200 ↔ ("R"∧77)∨100 ↔ " "∧77
0 ↔ 0 ↔ 0 ↔ 0

   LOC 2272
	0	;This is for a block of zeros
END